using System;
using System.Collections.Generic;
using System.Net;
using System.Net.Mail;
using vudu.Datos.SqlServer;
using vudu.Logica.Clases;

namespace vudu.ClasesDominio
{
    public class Estudiante
    {
        #region Private Member Variables

        private int _idEst;
        private int _cedula;
        private string _noExpediente;
        private string _nombre;
        private string _apellido;
        private string _sexo;
        private string _telefono;
        private DateTime _fechaNacimiento;
        private string _carrera;
        private string _semestre;
        private string _correo;

        private SqlServerEstudiante _mibd;


        private List<Materia> _listaMateriasAprobadas;
        private List<ControladorPreMatricula> _listaHorarioPreMatricula;

        private List<Materia> _misMateriasSeleccionadasPreMatricula;//GRUPO 2
        private List<SeccionMateria> _misSeccionesSeleccionadasPreMatricula; //GRUPO 2

        private ControladorPreMatricula _preMatriculaModificable; //GRUPO 2

        private int _pageCounter; //GRUPO 2
        private bool _havePractice; //GRUPO 2

        private ControladorHorarioDeClase _horarioChoque1; //GRUPO 2
        private ControladorHorarioDeClase _horarioChoque2; //GRUPO 2

        private int _secuenceCounter; //GRUPO 2

        #endregion

        #region Constructors

        public Estudiante()
        {
            _carrera = _semestre = " ";
            _mibd = new SqlServerEstudiante();
            //miPensum = new Pensum();
            _preMatriculaModificable = new ControladorPreMatricula(); //GRUPO 2
            _pageCounter = 0; //GRUPO 2
            _secuenceCounter = 0; //GRUPO 2
        }

        #endregion

        #region Public Properties

        public int IdEst
        {
            get { return _idEst; }
            set { _idEst = value; }
        }

        public string Carrera
        {
            get { return _carrera; }
            set { _carrera = value; }
        }
        
        public string Semestre
        {
            get { return _semestre; }
            set { _semestre = value; }
        }

        ///<summary>
        /// public List<Profesor> ConsultarProfesor(int tipoConsulta)
        /// {
        ///    return (new List<Profesor>());
        /// }
        /// </summary>

        public int Cedula
        {
            get { return _cedula; }
            set { _cedula = value; }
        }

        public String Expediente
        {
            get { return _noExpediente; }
            set { _noExpediente = value; }
        }

        public string Nombre
        {
            get { return _nombre; }
            set { _nombre = value; }
        }

        public string Apellido
        {
            get { return _apellido; }
            set { _apellido = value; }
        }

        public string Sexo
        {
            get { return _sexo; }
            set { _sexo = value; }
        }

        public string Telefono
        {
            get { return _telefono; }
            set { _telefono = value; }
        }

        public DateTime FechaNacimiento
        {
            get { return _fechaNacimiento; }
            set { _fechaNacimiento = value; }
        }

        public string Correo
        {
            get { return _correo; }
            set { _correo = value; }
        }

        public List<ControladorPreMatricula> ListaHorarioPreMatricula
        {
            get { return _listaHorarioPreMatricula; }
            set { _listaHorarioPreMatricula = value; }
        }

        public List<Materia> MisMateriasSeleccionadasPreMatricula
        {
            get { return _misMateriasSeleccionadasPreMatricula; }
            set { _misMateriasSeleccionadasPreMatricula = value; }
        }

        public List<SeccionMateria> MisSeccionesSeleccionadasPreMatricula
        {
            get { return _misSeccionesSeleccionadasPreMatricula; }
            set { _misSeccionesSeleccionadasPreMatricula = value; }
        }
		
        public List<Materia> ListaMateriasAprobadas
        {
            get { return _listaMateriasAprobadas; }
            set { _listaMateriasAprobadas = value; }
        }

        public ControladorPreMatricula PreMatriculaModificable
        {
            get { return _preMatriculaModificable; }
            set { _preMatriculaModificable = value; }
        }

        public int PageCounter
        {
            get { return _pageCounter; }
            set { _pageCounter = value; }
        }

        public bool HavePractice
        {
            get { return _havePractice; }
            set { _havePractice = value; }
        }

        public ControladorHorarioDeClase HorarioChoque1
        {
            get { return _horarioChoque1; }
            set { _horarioChoque1 = value; }
        }

        public ControladorHorarioDeClase HorarioChoque2
        {
            get { return _horarioChoque2; }
            set { _horarioChoque2 = value; }
        }

        public int SecuenceCounter
        {
            get { return _secuenceCounter; }
            set { _secuenceCounter = value; }
        }

        #endregion

        #region Public Methods

        public bool ConsultarEstudiante(int cedula)
        {
            return false;
        }

        public List<Estudiante> ConsultarTodoEstudiante()
        {
            List<Estudiante> est = new List<Estudiante>();
            est = _mibd.ConsultarTodosLosEstudiante();
            return est;
        }

        public int InsertarEstudiante(Estudiante estudiante)
        {
            int a = 0;
            a = _mibd.InsertarEstudiante(estudiante);
            return a;
        }

        public int InsertarEstudianteEscuela(int idestudiante, int idescuela, DateTime fecha)
        {
            int a = 0;
            a = _mibd.InsertarEstudianteEscuela(idestudiante, idescuela, fecha);
            return a;
        }

        public Estudiante ConsultarEstudianteCedula(int cedula)
        {
            Estudiante Est = new Estudiante();
            Est = _mibd.ConsultarEstudianteCedula(cedula);
            return Est;
        }

        public Estudiante ConsultarEstudianteExpe(string expediente)
        {
            Estudiante Est = new Estudiante();
            Est = _mibd.ConsultarEstudianteExpe(expediente);
            return Est;
        }

        public int ConsultarEstudianteExistente(int cedula)
        {
            int Est;
            Est = _mibd.ConsultarEstudianteExistente(cedula);
            return Est;
        }



        #region Grupo 6 metodos
            public int relacionEscuelaEstudiante(int _idUsuario)
            {
                SqlServerPensum sqlServerPensum = new SqlServerPensum();
                return sqlServerPensum.ConsultarEscuelaEstudiante(_idUsuario);
            }
        #endregion

        #endregion
    }
}